package ThreadDemo.ThreadDemo2;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:周次煜
 * Date: 2024-07-16
 * Time：21:52
 */

public class JoinDemo1 {

    /**
     * 主线程等待
     *
     * 1. 用到 对象1.join
     * 2. 在 main 线程的作用域 调用 join 方法时，就需要等待 对象1 先执行
     * 3. 自身处于 阻塞状态，等待 调用 join方法的对象先执行完
     * @param args
     * @throws InterruptedException 等待方法需要抛出的异常
     *
     *
     */

    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(()-> {
            for (int i = 0; i < 4; i++) {
                System.out.println("t1正在执行...");
            }
        });

        t1.start();

        System.out.println("main 线程正在等待...");

//        等待 t1 执行完再执行 main 线程
            t1.join();

//        一般情况创建 进程的同时
//        主线程先获取资源 抢占的更快
        for (int i = 0; i < 4; i++) {
            System.out.println("main 线程正在执行...");
        }


        System.out.println("main 线程执行完毕!");
    }
}


 class JoinDemo {

    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(()-> {
            for (int i = 0; i < 4; i++) {
                System.out.println("t1正在执行...");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }

            }

        });

        t1.start();

        System.out.println("main 线程正在等待...");

//        等待 t1 执行完再执行 main 线程
        t1.join(1000);

//        一般情况创建 进程的同时
//        主线程先获取资源 抢占的更快
        for (int i = 0; i < 2; i++) {
            System.out.println("main 线程正在执行...");
        }


        System.out.println("main 线程执行完毕!");


    }
}


